package com.bfsuol.bfsuolframework.core.controller;

import java.util.Collection;
import java.util.Map;

public interface SecurityManage {
	
	/**
	 * 得到某个角色拥有的所有权限列表
	 * @param roleId
	 * @return
	 */
	public Map<Long, Long> getPermissions(Long roleId);
	/**
	 * 得到某个角色对某个资源拥有的权限值
	 * @param roleId
	 * @param resourceId
	 * @return
	 */
	public Long getPermission(Long roleId, Long resourceId);
	/**
	 * 得到某个角色对某个资源拥有的权限值
	 * @param roleId
	 * @param action
	 * @return
	 */
	public Long getPermission(Long roleId, String action);
	/**
	 * 得到多个角色对某个资源拥有的权限值
	 * @param roleIds
	 * @param resourceId
	 * @return
	 */
	public Long getPermission(Collection<Long> roleIds, Long resourceId);
	/**
	 * 得到多个角色对某个资源拥有的权限值
	 * @param roleIds
	 * @param action
	 * @return
	 */
	public Long getPermission(Collection<Long> roleIds, String action);
	/**
	 * 判断某个角色对某个资源是否拥有权限
	 * @param roleId
	 * @param resourceId
	 * @return
	 */
	public boolean hasPermission(Long roleId, Long resourceId);
	/**
	 * 判断某个角色对某个资源是否拥有权限
	 * @param roleId
	 * @param action
	 * @return
	 */
	public boolean hasPermission(Long roleId, String action);
	/**
	 * 判断多个角色对某个资源是否拥有权限
	 * @param roleIds
	 * @param resourceId
	 * @return
	 */
	public boolean hasPermission(Collection<Long> roleIds, Long resourceId);
	/**
	 * 判断多个角色对某个资源是否拥有权限
	 * @param roleIds
	 * @param action
	 * @return
	 */
	public boolean hasPermission(Collection<Long> roleIds, String action);
	/**
	 * 判断某个权限值
	 * @param permission
	 * @param method
	 * @return
	 */
	public boolean hasMethod(Long permission, String method);
	/**
	 * 判断某个角色是否可以访问某个功能
	 * @param roleId
	 * @param functionId
	 * @return
	 */
	public boolean hasFunction(Long roleId, Long functionId);
	/**
	 * 判断多个角色是否可以访问某个功能
	 * @param roleIds
	 * @param functionId
	 * @return
	 */
	public boolean hasFunction(Collection<Long> roleIds, Long functionId);
}